<%@ page import="com.atguigu.service.impl.ServiceServiceImpl" %>
<%@ page import="com.atguigu.service.ServiceService" %>
<%@ page import="com.atguigu.service.ServerService" %>
<%@ page import="com.atguigu.service.impl.ServerServiceImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="/pages/common/headAndWelcome.jsp" %><%--静态引用,包括项目起始点,和css,jquery等头部信息 --%>

<title>task页面</title>

<%--<div class="container-fluid "> <!--table行-->--%>

    <div class="container-fluid">
        <div>
            <h1 class="text-center">
                <span class="uppercase">task页面</span>
            </h1>
        </div><!--head-->
        <hr>
        <div>
            <div class="col-lg-2 taskListArea">
                <table class="table table-striped table-bordered table-hover taskListTable" style="table-layout:inherit">
                    <thead class="thead">
                    <tr>
                        <th>序号</th>
                        <th>任务名称</th>
                    </tr>
                    </thead>
                    <tbody class="tbody">
                    <% Integer count=1;%>
                    <c:forEach items="${requestScope.tasks}" var="task" varStatus="taskStatus">
                        <tr class="tr">
                            <td class="number">
                                <input type="checkbox" class="hidden">
                                <%=count++%>
                                <div class="glyphicon glyphicon-remove  taskDelete hand"></div>
                            </td>
                            <td class="showTask hand" taskId="${task.id}" taskType="${requestScope.taskType}">${task.name}</td>
                        </tr>
                    </c:forEach>
                    </tbody>
                </table><!--taskListArea-->
            </div><!--taskListArea-->
            <div class="col-lg-10 taskMain">
                <div class="taskAddArea">
                    <form class="form-horizontal updatePhpCodeTaskForm" role="form" ><!--php form-->
                        <div class="form-group"><!--任务类型-->
                            <label  class="col-sm-1 control-label">任务类型</label>
                            <div class="col-sm-2">
                                <select class="form-control taskType">
                                    <option value="updatePhpCodeTask">更新php代码</option>
                                    <option value="updateTomcatCodeTask">更新tomcat代码</option>
                                    <option value="updateTomcatCodeAndHeartbeatTask">更新tomcat代码+心跳检测</option>
                                    <option value="addContainer">添加容器</option>
                                    <option value="restartService">重启服务</option>
                                    <option value="checkCrontab">查看定时任务</option>
                                </select>
                            </div>
                            <div class="btn btn-default glyphicon glyphicon-pause  taskStatus hand"></div>
                        </div><!--任务类型-->
                        <div class="form-group"><!--发起人-->
                            <label  class="col-sm-1 control-label">发起人</label>
                            <div class="col-sm-2">
                                <select class="form-control user">
                                    <c:forEach items="${requestScope.users}" var="item">
                                        <option value="${item.id}">${item.username}</option>
                                    </c:forEach>
                                </select>
                            </div>
                        </div><!--发起人-->
                        <div class="form-group"><!--任务名称-->
                            <label  class="col-sm-1 control-label">任务名称</label>
                            <div class="col-sm-11">
                                <input type="text" class="form-control taskName"  placeholder="TaskName">
                            </div>
                        </div><!--任务名称-->
                        <div class="form-group"><!--文件列表-->
                            <label  class="col-sm-1 control-label">文件列表</label>
                            <div class="col-sm-11">
                                <textarea name="FileList" cols="30" rows="10" class="files form-control" placeholder="如:web/index.php"></textarea>
                            </div>
                        </div><!--文件列表-->
                        <div class="form-group"><!--项目过滤器-->
                            <label class="col-sm-1 control-label" title="代码从哪里拉">项目过滤器</label>
                            <div class="col-sm-9 ">
                                <div class="col-sm-4 row "><!--project select-->
                                    <select class="projectType form-control col-sm-2">
                                        <c:forEach items="${requestScope.phpProjects}" var="project">
                                            <option value="${project.id}">${project.name}</option>
                                        </c:forEach>
                                    </select>
                                </div><!--project select-->
                                <div class="col-sm-4"><!--project module select-->
                                    <select class="projectModule form-control  col-sm-2" >
                                        <c:forEach items="${requestScope.phpProjectModules}" var="projectModule" varStatus="projectModuleStatus">
                                            <option value="${projectModule.id}">${projectModule.name}</option>
                                        </c:forEach>
                                    </select>
                                </div><!--project module select-->
                                <div class="col-sm-4 row"><!-- filter input-->
                                    <input type="text" class="targetNodeFilter form-control"  placeholder="过滤条件 如:济宁">
                                </div><!-- filter input-->
                            </div><!--project module select-->
                        </div><!--项目过滤器-->
                        <div class="form-group"><!--目标节点-->
                            <label  class="col-sm-1 control-label">目标节点</label>
                            <div class="col-sm-11 targetNodeArea">
                                <c:forEach items="${requestScope.nginxServiceConfigPhps}" var="nginxServiceConfigPhp" varStatus="nginxServiceConfigPhpStatus" >
                                    <p  class="targetNode btn btn-default " targetNodeId="${nginxServiceConfigPhp.id}">${nginxServiceConfigPhp.use}</p>
                                </c:forEach>
                            </div>
                        </div><!--目标节点-->
                        <div class="form-group"><!--提交-->
                            <div class="col-sm-offset-1 col-sm-10">
                                <a type="submit" class="btn btn-default submit">提交</a>
                            </div>
                        </div><!--提交-->
                    </form><!--php form-->
                    <form class="form-horizontal updateTomcatCodeTaskForm hidden" role="form" ><!--tomcat form-->
                        <div class="form-group"><!--任务类型-->
                            <label class="col-sm-1 control-label">任务类型</label>
                            <div class="col-sm-2">
                                <select class="form-control taskType" >
                                    <option value="updatePhpCodeTask">更新php代码</option>
                                    <option value="updateTomcatCodeTask">更新tomcat代码</option>
                                    <option value="updateTomcatCodeAndHeartbeatTask">更新tomcat代码+心跳检测</option>
                                    <option value="addContainer">添加容器</option>
                                    <option value="restartService">重启服务</option>
                                    <option value="checkCrontab">查看定时任务</option>
                                </select>
                            </div>
                            <div class="btn btn-default glyphicon glyphicon-pause  taskStatus hand"></div>
                        </div><!--任务类型-->
                        <div class="form-group"><!--任务名称-->
                            <label class="col-sm-1 control-label">任务名称</label>
                            <div class="col-sm-11">
                                <input type="text" class="form-control taskName" placeholder="TaskName">
                            </div>
                        </div><!--任务名称-->
                        <div class="form-group"><!--文件地址-->
                            <label class="col-sm-1 control-label">文件地址</label>
                            <div class="col-sm-11">
                                <input type="text" name="file" class="file form-control" placeholder="如:tomcat/fanruan/4.0.war">
<%--                                <textarea name="FileList"  cols="30" rows="10" class="files form-control" placeholder="如:web/index.php"></textarea>--%>
                            </div>
                        </div><!--文件列表-->
                        <div class="form-group"><!--项目过滤器-->
                            <label class="col-sm-1 control-label" title="代码从哪里拉">项目过滤器</label>
                            <div class="col-sm-9 ">
                                <div class="col-sm-4 row ">
                                    <select class="projectType form-control col-sm-2" >
                                        <c:forEach items="${requestScope.tomcatProjects}" var="project">
                                            <option value="${project.id}">${project.name}</option>
                                        </c:forEach>
                                    </select>
                                </div>
                                <div class="col-sm-4">
                                    <select class="projectModule form-control  col-sm-2" >
                                        <c:forEach items="${requestScope.tomcatProjectModules}" var="projectModule" varStatus="projectModuleStatus">
                                            <option value="${projectModule.id}">${projectModule.name}</option>
                                        </c:forEach>
                                    </select>
                                </div>
                                <div class="col-sm-4 row">
                                    <input type="text" class="targetNodeFilter form-control"  placeholder="过滤条件 如:济宁">
                                </div>
                            </div>
                        </div><!--项目过滤器-->
                        <div class="form-group"><!--目标节点-->
                            <label  class="col-sm-1 control-label">目标节点</label>
                            <div class="col-sm-11 targetNodeArea">
                                <c:forEach items="${requestScope.tomcatServiceConfigs}" var="tomcatServiceConfig" varStatus="tomcatServiceConfigStatus" >
                                    <p  class="targetNode btn btn-default " targetNodeId="${tomcatServiceConfig.id}">${tomcatServiceConfig.use}</p>
                                </c:forEach>
                            </div>
                        </div><!--目标节点-->
                        <div class="form-group"><!--提交-->
                            <div class="col-sm-offset-1 col-sm-10">
                                <a type="submit" class="btn btn-default submit">提交</a>
                            </div>
                        </div><!--提交-->
                    </form><!--tomcat form-->
                    <form class="form-horizontal updateTomcatCodeAndHeartbeatTaskForm hidden" role="form" ><!--tomcat form-->
                        <div class="form-group"><!--任务类型-->
                            <label class="col-sm-1 control-label">任务类型</label>
                            <div class="col-sm-2">
                                <select class="form-control taskType" >
                                    <option value="updatePhpCodeTask">更新php代码</option>
                                    <option value="updateTomcatCodeTask">更新tomcat代码</option>
                                    <option value="updateTomcatCodeAndHeartbeatTask">更新tomcat代码+心跳检测</option>
                                    <option value="addContainer">添加容器</option>
                                    <option value="restartService">重启服务</option>
                                    <option value="checkCrontab">查看定时任务</option>
                                </select>
                            </div>
                            <div class="btn btn-default glyphicon glyphicon-pause  taskStatus hand"></div>
                        </div><!--任务类型-->
                        <div class="form-group"><!--任务名称-->
                            <label class="col-sm-1 control-label">任务名称</label>
                            <div class="col-sm-11">
                                <input type="text" class="form-control taskName" placeholder="TaskName">
                            </div>
                        </div><!--任务名称-->
                        <div class="form-group"><!--文件地址-->
                            <label class="col-sm-1 control-label">文件地址</label>
                            <div class="col-sm-11">
                                <input type="text" name="file" class="file form-control" placeholder="如:tomcat/fanruan/4.0.war">
                                <%--                                <textarea name="FileList"  cols="30" rows="10" class="files form-control" placeholder="如:web/index.php"></textarea>--%>
                            </div>
                        </div><!--文件列表-->
                        <div class="form-group"><!--项目过滤器-->
                            <label class="col-sm-1 control-label" title="代码从哪里拉">项目过滤器</label>
                            <div class="col-sm-9 ">
                                <div class="col-sm-4 row ">
                                    <select class="projectType form-control col-sm-2" >
                                        <c:forEach items="${requestScope.tomcatAndHeartbeatProjects}" var="project">
                                            <option value="${project.id}">${project.name}</option>
                                        </c:forEach>
                                    </select>
                                </div>
                                <div class="col-sm-4">
                                    <select class="projectModule form-control  col-sm-2" >
                                        <c:forEach items="${requestScope.tomcatAndHeartbeatProjectModules}" var="projectModule" varStatus="projectModuleStatus">
                                            <option value="${projectModule.id}">${projectModule.name}</option>
                                        </c:forEach>
                                    </select>
                                </div>
                                <div class="col-sm-4 row">
                                    <input type="text" class="targetNodeFilter form-control"  placeholder="过滤条件 如:济宁">
                                </div>
                            </div>
                        </div><!--项目过滤器-->
                        <div class="form-group"><!--目标节点-->
                            <label  class="col-sm-1 control-label">目标节点</label>
                            <div class="col-sm-11 targetNodeArea">
                                <c:forEach items="${requestScope.tomcatAndHeartbeatServiceConfigs}" var="tomcatAndHeartbeatServiceConfig" varStatus="tomcatAndHeartbeatServiceConfigStatus" >
                                    <p  class="targetNode btn btn-default " targetNodeId="${tomcatAndHeartbeatServiceConfig.id}">${tomcatAndHeartbeatServiceConfig.use}</p>
                                </c:forEach>
                            </div>
                        </div><!--目标节点-->
                        <div class="form-group"><!--提交-->
                            <div class="col-sm-offset-1 col-sm-10">
                                <a type="submit" class="btn btn-default submit">提交</a>
                            </div>
                        </div><!--提交-->
                    </form><!--tomcat form-->
                </div><!--taskAddArea-->
                <div class="resultShowArea row"><hr>
                    <div>
                        <div class="col-sm-1" style="text-align: right ;height: 40px;line-height: 40px">
                            <label  class=" control-label ">目标节点</label>
                        </div>
                        <div class="col-sm-11 resultButtonArea">
                            <button class="btn btn-default">空</button>
                        </div>
                    </div>
                    <div class="form-group">
                        <textarea class="form-control showThisTargetNodeThisTaskResult" name="result"  cols="30" rows="10" placeholder="该节点,该任务的执行结果"></textarea>
                    </div>
                </div><!--resultShowArea-->
            </div><!--taskMain-->
        </div><!--body-->
</div>
</body>
<script>
    $(".taskListArea").click(function (event){
        let eventTarget=$(event.target)
        if(eventTarget.hasClass("taskDelete")){
            let trObj=$(event.target).closest(".tr")
            let data={}
            data.taskId=trObj.find(".showTask").attr("taskId")
            data.taskType=trObj.find(".showTask").attr("taskType")
            //console.log(data)
            //return
            $.ajax({
                type: "post",
                url: "<%=basepath%>taskServlet?action=deleteTask",
                data: data,
                success: function (response, status, xhr) {
                    console.log("收到回信")
                    //console.log(response)
                    if(response=="删除成功"){
                        alert(response)
                        location.reload()
                    }else {
                        alert(response)
                    }
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//ajax
        }
        if(eventTarget.hasClass("showTask")){
            $(".showTask").removeClass("btn-primary")
            eventTarget.addClass("btn-primary")
            let data={};
            let taskId=eventTarget.attr("taskId");
            let taskType=eventTarget.attr("taskType");
            data.taskId=taskId;
            data.taskType=taskType;
            //console.log(eventTarget);return
            $.ajax({//获取任务内容
                type: "post",
                url: "<%=basepath%>taskServlet?action=getTask",
                data: data,
                success: function (response, status, xhr) {//渲染任务内容
                    console.log("收到回信")
                    //console.log(response)
                    let taskForm=$("."+taskType+"Form")
                    let jsonObj=JSON.parse(response);
                    taskForm.find(".taskType").val(taskType)
                    taskForm.find(".taskName").val(jsonObj.name)
                    if(taskType=="updatePhpCodeTask"){
                        taskForm.find(".files").val(jsonObj.files)
                    }
                    if(taskType=="updateTomcatCodeTask"){
                        taskForm.find(".file").val(jsonObj.file)
                    }
                    if(taskType=="updateTomcatCodeAndHeartbeatTask"){
                        taskForm.find(".file").val(jsonObj.file)
                    }
                    taskForm.find(".projectType").val(jsonObj.projectType)
                    taskForm.find(".projectModule").val(jsonObj.projectModule)
                    taskForm.find(".submit").attr("mainTaskId",jsonObj.id)
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//ajax //获取任务内容
            $.ajax({ //获取targetNodes
                type: "post",
                url: "<%=basepath%>taskServlet?action=getTaskTargetNodes",
                data: data,
                success: function (response, status, xhr) {//渲染 targetNodes
                    console.log("收到回信")
                    //console.log(response);//console.log(JSON.parse(response));
                    let resultButtonArea=$(".resultButtonArea").html("") //这是结果区按钮清空动作
                    let targetNodeAreaObj=$("."+taskType+"Form").find(".targetNodeArea").html("")
                    let jsonObj=JSON.parse(response);
                    //console.log(jsonObj)
                    $.each(jsonObj.allNodes,function (index,targetNode){
                        let targetNodeObj=$("<div/>")
                        targetNodeObj.attr("class","targetNode btn btn-default").attr("targetNodeId",targetNode.id).text(targetNode.use)
                        for (let i in jsonObj.targetNodes){
                            if(targetNode.id===jsonObj.targetNodes[i].id){
                                targetNodeObj.addClass("btn-primary checked")
                                let checkedObj=$("<div/>")
                                checkedObj.attr("class", "targetNode btn btn-default").attr("targetNodeId",jsonObj.targetNodes[i].id).attr("mainTaskId", jsonObj.task.id).text(jsonObj.targetNodes[i].use)
                                resultButtonArea.append(checkedObj)
                                resultButtonArea.append(" ")
                            }
                        }
                        targetNodeAreaObj.append(targetNodeObj)
                        targetNodeAreaObj.append(" ")
                    })


                    // $(".targetNodeArea").find(".targetNode").attr("class","targetNode btn btn-default").each(function (index,element){//返回的是字符串,如果字符串中包含有这个nodeId,就加个颜色
                    //     if (response.indexOf($(element).attr("targetNodeId"))>=0){
                    //         $(element).addClass("btn-primary checked")
                    //         let checkedObj=$("<div/>")
                    //         checkedObj.attr("class", "targetNode btn btn-default").attr("targetNodeId", $(element).attr("targetNodeId")).attr("mainTaskId", data.taskId).text($(element).text())
                    //         resultButtonArea.append(checkedObj)
                    //         resultButtonArea.append(" ")
                    //     }else{
                    //     }
                    // })
                    // $(".showThisTargetNodeThisTaskResult").val("")//这是结果区的内容清空动作
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//ajax //获取targetNodes按钮,以及结果区域的按钮,以及结果区域的结果内容
        }
    })
    $(".taskAddArea").click(function (event){
        let eventTarget=$(event.target)
        if (eventTarget.hasClass("submit")){//这是提交事件的收集器
            let formObj=eventTarget.closest("form")
            if(formObj.attr("class").indexOf("updatePhpCodeTaskForm")>=0){//这是php form 的提交事件
                let taskType=formObj.find(".taskType:first").val()
                let taskName=formObj.find(".taskName:first").val()
                let files=formObj.find(".files:first").val()
                let projectType=formObj.find(".projectType:first").val()
                let projectModule=formObj.find(".projectModule:first").val()
                let targetNodes=""
                formObj.find(".checked").each(function (index,element){
                    //console.log(element)
                    if(targetNodes==""){
                        targetNodes=$(element).attr("targetNodeId");
                    }else{
                        targetNodes=targetNodes+","+$(element).attr("targetNodeId")
                    }
                }) //收集要发布的网站的id
                let data={};
                data["taskType"]=taskType;
                data["taskName"]=taskName;
                data["files"]=files;
                data["projectType"]=projectType;
                data["projectModule"]=projectModule;
                data["targetNodes"]=targetNodes;
                data["mainTaskId"]=eventTarget.attr("mainTaskId") //这个是用于update的时候,add时候是没有的
                //console.log(data)
                //console.log(files)
                //return ;
                $.ajax({                                                            //提交主任务
                    type: "post",
                    url: "<%=basepath%>taskServlet?action=addTask",
                    data: data,
                    success: function (response, status, xhr) {
                        console.log("收到回信")
                        //console.log(response)
                        alert(response)
                        if(response=="存入成功") {
                            location.reload()
                        }else {
                        }
                        //
                        <%--if(response.indexOf("{")>=0){//如果你是json格式的,那么我就分析你;反之,你就报错,那我就报错--%>
                        <%--    let submitJsonObj=JSON.parse(response)--%>
                        <%--    let submitObj=$(".submit")--%>
                        <%--    //console.log("存入成功")--%>
                        <%--    alert("存入成功")--%>
                        <%--    //console.log($(".submit").attr('mainTaskId'));--%>
                        <%--    let tbody=$(".tbody:first")--%>
                        <%--    submitObj.attr("submitResult","存入成功")--%>
                        <%--    if(submitObj.attr('mainTaskId')){//有值,就是true,就是update--%>
                        <%--        console.log("update")--%>
                        <%--        $.ajax({                                               //获得任务列表--%>
                        <%--            type: "post",--%>
                        <%--            url: "<%=basepath%>taskServlet?action=getUpdatePhpCodeTasks",--%>
                        <%--            data: data,--%>
                        <%--            success: function (response, status, xhr) {--%>
                        <%--                console.log("收到回信")--%>
                        <%--                //console.log(response)--%>
                        <%--                var jsonObj=JSON.parse(response);--%>
                        <%--                //console.log(jsonObj);--%>
                        <%--                let count=0;--%>
                        <%--                tbody.html("")--%>
                        <%--                //渲染列表--%>
                        <%--                $.each(jsonObj,function (index,item){--%>
                        <%--                    //console.log(index)--%>
                        <%--                    //console.log(item)--%>
                        <%--                    let trObj=$("<tr>")--%>
                        <%--                    trObj.addClass("tr")--%>
                        <%--                    let tdObjCount=$("<td>")--%>
                        <%--                    let inputCheckBoxObj=$("<input>")--%>
                        <%--                    inputCheckBoxObj.attr("type","checkbox")--%>
                        <%--                    inputCheckBoxObj.addClass("hidden")--%>
                        <%--                    tdObjCount.append(inputCheckBoxObj)--%>
                        <%--                    let spanObj=$("<span/>")--%>
                        <%--                    spanObj.html(++count+" ")--%>
                        <%--                    tdObjCount.append(spanObj);--%>
                        <%--                    let deleteDivNode=$("<div/>")--%>
                        <%--                    deleteDivNode.addClass("glyphicon glyphicon-remove  taskDelete hand")--%>
                        <%--                    tdObjCount.append(deleteDivNode)--%>
                        <%--                    trObj.append(tdObjCount)--%>
                        <%--                    let tdObjTaskName=$("<td>")--%>
                        <%--                    tdObjTaskName.addClass("showTask hand")--%>
                        <%--                    if(index===$(".submit").attr('mainTaskId')){--%>
                        <%--                        tdObjTaskName.addClass("btn-primary")--%>
                        <%--                    }--%>
                        <%--                    tdObjTaskName.text(item);--%>
                        <%--                    tdObjTaskName.attr("taskId",index)--%>
                        <%--                    tdObjTaskName.attr("taskType",taskType)--%>
                        <%--                    trObj.append(tdObjTaskName)--%>
                        <%--                    tbody.append(trObj)--%>
                        <%--                })--%>

                        <%--                let selectedObj=tbody.find(".btn-primary")--%>
                        <%--                let getTaskNodesData={}--%>
                        <%--                getTaskNodesData.taskType=selectedObj.attr("taskType");--%>
                        <%--                getTaskNodesData.taskId=selectedObj.attr("taskId");--%>
                        <%--                //console.log(getTaskNodesData)--%>
                        <%--                $.ajax({                                  //获得里列表选中的那一项,去拿它的 targetNodes--%>
                        <%--                    type: "post",--%>
                        <%--                    url: "<%=basepath%>taskServlet?action=getTaskNodes",--%>
                        <%--                    data: getTaskNodesData,--%>
                        <%--                    success: function (response, status, xhr) {--%>
                        <%--                        console.log("收到回信")--%>
                        <%--                        //console.log(response)--%>
                        <%--                        let jsonObj=JSON.parse(response)--%>
                        <%--                        let mainTaskId=""--%>
                        <%--                        let resultButtonArea=$(".resultButtonArea:first").html("")--%>
                        <%--                        $.each(jsonObj,function (index,item){--%>
                        <%--                            // console.log(index)--%>
                        <%--                            // console.log(item)--%>
                        <%--                            if(index=="mainTaskId"){--%>
                        <%--                                mainTaskId=item;--%>
                        <%--                            }else {--%>
                        <%--                                let divObj=$("<div/>")--%>
                        <%--                                divObj.addClass("btn btn-default targetNode")--%>
                        <%--                                divObj.attr("targetNodeId",index)--%>
                        <%--                                divObj.attr("mainTaskId",mainTaskId)--%>
                        <%--                                divObj.text(item)--%>
                        <%--                                resultButtonArea.append(divObj)--%>
                        <%--                                resultButtonArea.append(" ")--%>
                        <%--                            }--%>
                        <%--                        })--%>
                        <%--                    },--%>
                        <%--                    timeout: 10000, //如果超时1000毫秒，就结束--%>
                        <%--                    error: function (xhr, errorText, errorType) { //错误后的行为--%>
                        <%--                        console.log("回信异常")--%>
                        <%--                        console.log("errorText:" + errorText); //error--%>
                        <%--                        console.log("errorType:" + errorType); //not found--%>
                        <%--                        console.log("xhr.status:" + xhr.status); //404--%>
                        <%--                        console.log("xhr.statusText:" + xhr.statusText); //not found--%>
                        <%--                    },--%>
                        <%--                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
                        <%--                })//ajax                                 //获得里列表选中的那项,去拿它的 targetNodes--%>
                        <%--            },--%>
                        <%--            timeout: 10000, //如果超时1000毫秒，就结束--%>
                        <%--            error: function (xhr, errorText, errorType) { //错误后的行为--%>
                        <%--                console.log("回信异常")--%>
                        <%--                console.log("errorText:" + errorText); //error--%>
                        <%--                console.log("errorType:" + errorType); //not found--%>
                        <%--                console.log("xhr.status:" + xhr.status); //404--%>
                        <%--                console.log("xhr.statusText:" + xhr.statusText); //not found--%>
                        <%--            },--%>
                        <%--            dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
                        <%--        })//ajax  //update后,获得任务列表--%>
                        <%--    }else {//undefined 为false,就是add--%>
                        <%--        console.log("add")--%>
                        <%--        submitObj.attr('mainTaskId',submitJsonObj.mainTaskId) //这个是补充于add时候,update的时候不更新--%>
                        <%--        $.ajax({                                               //获得任务列表--%>
                        <%--            type: "post",--%>
                        <%--            url: "<%=basepath%>taskServlet?action=getUpdatePhpCodeTasks",--%>
                        <%--            data: data,--%>
                        <%--            success: function (response, status, xhr) {--%>
                        <%--                console.log("收到回信")--%>
                        <%--                //console.log(response)--%>
                        <%--                var jsonObj=JSON.parse(response);--%>
                        <%--                //console.log(jsonObj);--%>
                        <%--                let count=0;--%>
                        <%--                tbody.html("")--%>
                        <%--                // rendDataToTaskList(jsonObj,tbody,data["taskType"],count)  //渲染列表--%>
                        <%--                let rendDataToTaskListCount=1;--%>
                        <%--                $.each(jsonObj,function (index,item){--%>
                        <%--                    //console.log(index)--%>
                        <%--                    //console.log(item)--%>
                        <%--                    let trObj=$("<tr>")--%>
                        <%--                    trObj.addClass("tr")--%>
                        <%--                    let tdObjCount=$("<td>")--%>
                        <%--                    let inputCheckBoxObj=$("<input>")--%>
                        <%--                    inputCheckBoxObj.attr("type","checkbox")--%>
                        <%--                    inputCheckBoxObj.addClass("hidden")--%>
                        <%--                    tdObjCount.append(inputCheckBoxObj)--%>
                        <%--                    let spanObj=$("<span/>")--%>
                        <%--                    spanObj.html(++count+" ")--%>
                        <%--                    tdObjCount.append(spanObj);--%>
                        <%--                    let deleteDivNode=$("<div/>")--%>
                        <%--                    deleteDivNode.addClass("glyphicon glyphicon-remove  taskDelete hand")--%>
                        <%--                    tdObjCount.append(deleteDivNode)--%>
                        <%--                    trObj.append(tdObjCount)--%>
                        <%--                    let tdObjTaskName=$("<td>")--%>
                        <%--                    tdObjTaskName.addClass("showTask hand")--%>
                        <%--                    if(rendDataToTaskListCount++ == Object.keys(jsonObj).length){--%>
                        <%--                        tdObjTaskName.addClass("btn-primary")--%>
                        <%--                    }--%>
                        <%--                    tdObjTaskName.text(item);--%>
                        <%--                    tdObjTaskName.attr("taskId",index)--%>
                        <%--                    tdObjTaskName.attr("taskType",taskType)--%>
                        <%--                    trObj.append(tdObjTaskName)--%>
                        <%--                    tbody.append(trObj)--%>
                        <%--                })--%>

                        <%--                let selectedObj=tbody.find(".btn-primary")--%>
                        <%--                let getTaskNodesData={}--%>
                        <%--                getTaskNodesData.taskType=selectedObj.attr("taskType");--%>
                        <%--                getTaskNodesData.taskId=selectedObj.attr("taskId");--%>
                        <%--                //console.log("这是add行为后的渲染列表后的获取targetNodes的data")--%>
                        <%--                //console.log(getTaskNodesData)--%>
                        <%--                $.ajax({                                  //获得里列表里被选中的那一项,去拿它的 targetNodes--%>
                        <%--                    type: "post",--%>
                        <%--                    url: "<%=basepath%>taskServlet?action=getTaskNodes",--%>
                        <%--                    data: getTaskNodesData,--%>
                        <%--                    success: function (response, status, xhr) {--%>
                        <%--                        console.log("收到回信")--%>
                        <%--                        //console.log(response)--%>
                        <%--                        //return--%>
                        <%--                        let jsonObj=JSON.parse(response)--%>
                        <%--                        let mainTaskId=""--%>
                        <%--                        let resultButtonArea=$(".resultButtonArea:first").html("")--%>
                        <%--                        $.each(jsonObj,function (index,item){--%>
                        <%--                            // console.log(index)--%>
                        <%--                            // console.log(item)--%>
                        <%--                            if(index=="mainTaskId"){--%>
                        <%--                                mainTaskId=item;--%>
                        <%--                            }else {--%>
                        <%--                                let divObj=$("<div/>")--%>
                        <%--                                divObj.addClass("btn btn-default targetNode")--%>
                        <%--                                divObj.attr("targetNodeId",index)--%>
                        <%--                                divObj.attr("mainTaskId",mainTaskId)--%>
                        <%--                                divObj.text(item)--%>
                        <%--                                resultButtonArea.append(divObj)--%>
                        <%--                                resultButtonArea.append(" ")--%>
                        <%--                            }--%>
                        <%--                        })--%>
                        <%--                    },--%>
                        <%--                    timeout: 10000, //如果超时1000毫秒，就结束--%>
                        <%--                    error: function (xhr, errorText, errorType) { //错误后的行为--%>
                        <%--                        console.log("回信异常")--%>
                        <%--                        console.log("errorText:" + errorText); //error--%>
                        <%--                        console.log("errorType:" + errorType); //not found--%>
                        <%--                        console.log("xhr.status:" + xhr.status); //404--%>
                        <%--                        console.log("xhr.statusText:" + xhr.statusText); //not found--%>
                        <%--                    },--%>
                        <%--                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
                        <%--                })//ajax                                 //获得里列表选中的那项,去拿它的 targetNodes--%>
                        <%--            },--%>
                        <%--            timeout: 10000, //如果超时1000毫秒，就结束--%>
                        <%--            error: function (xhr, errorText, errorType) { //错误后的行为--%>
                        <%--                console.log("回信异常")--%>
                        <%--                console.log("errorText:" + errorText); //error--%>
                        <%--                console.log("errorType:" + errorType); //not found--%>
                        <%--                console.log("xhr.status:" + xhr.status); //404--%>
                        <%--                console.log("xhr.statusText:" + xhr.statusText); //not found--%>
                        <%--            },--%>
                        <%--            dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
                        <%--        })//ajax  //add后,获得任务列表--%>
                        <%--    } //判断是新增还是update,他俩的列表选中规则不同--%>
                        <%--}else {--%>
                        <%--    submitObj.attr("submitResult","存入失败")--%>
                        <%--    alert("存入失败,请看consoleLog");--%>
                        <%--}--%>
                    },
                    timeout: 10000, //如果超时1000毫秒，就结束
                    error: function (xhr, errorText, errorType) { //错误后的行为
                        console.log("回信异常")
                        console.log("errorText:" + errorText); //error
                        console.log("errorType:" + errorType); //not found
                        console.log("xhr.status:" + xhr.status); //404
                        console.log("xhr.statusText:" + xhr.statusText); //not found
                    },
                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                })//ajax  //提交主任务
            }//这是php form 的提交事件
            if(formObj.attr("class").indexOf("updateTomcatCodeTaskForm")>=0){//这是tomcat form 的提交事件
                let taskType=formObj.find(".taskType:first").val()
                let taskName=formObj.find(".taskName:first").val()
                let file=formObj.find(".file:first").val()
                let projectType=formObj.find(".projectType:first").val()
                let projectModule=formObj.find(".projectModule:first").val()
                let targetNodes=""
                formObj.find(".checked").each(function (index,element){
                    //console.log(element)
                    if(targetNodes==""){
                        targetNodes=$(element).attr("targetNodeId");
                    }else{
                        targetNodes=targetNodes+","+$(element).attr("targetNodeId")
                    }
                }) //收集要发布的网站的id
                let data={};
                data["taskType"]=taskType;
                data["taskName"]=taskName;
                data["file"]=file;
                data["projectType"]=projectType;
                data["projectModule"]=projectModule;
                data["targetNodes"]=targetNodes;
                data["mainTaskId"]=eventTarget.attr("mainTaskId") //这个是用于update的时候,add时候是没有的
                //console.log(data)
                //console.log(files)
                //return ;
                $.ajax({                                                            //提交主任务
                    type: "post",
                    url: "<%=basepath%>taskServlet?action=addTask",
                    data: data,
                    success: function (response, status, xhr) {
                        console.log("收到回信")
                        //console.log(response)
                        alert(response)
                        if(response=="存入成功") {
                            location.reload()
                        }else {
                        }
                    },
                    timeout: 10000, //如果超时1000毫秒，就结束
                    error: function (xhr, errorText, errorType) { //错误后的行为
                        console.log("回信异常")
                        console.log("errorText:" + errorText); //error
                        console.log("errorType:" + errorType); //not found
                        console.log("xhr.status:" + xhr.status); //404
                        console.log("xhr.statusText:" + xhr.statusText); //not found
                    },
                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                })//ajax  //提交主任务
            }//这是tomcat form 的提交事件
            if(formObj.attr("class").indexOf("updateTomcatCodeAndHeartbeatTaskForm")>=0){//这是tomcat form 的提交事件
                console.log(7878)
                let taskType=formObj.find(".taskType:first").val()
                let taskName=formObj.find(".taskName:first").val()
                let file=formObj.find(".file:first").val()
                let projectType=formObj.find(".projectType:first").val()
                let projectModule=formObj.find(".projectModule:first").val()
                let targetNodes=""
                formObj.find(".checked").each(function (index,element){
                    //console.log(element)
                    if(targetNodes==""){
                        targetNodes=$(element).attr("targetNodeId");
                    }else{
                        targetNodes=targetNodes+","+$(element).attr("targetNodeId")
                    }
                }) //收集要发布的网站的id
                let data={};
                data["taskType"]=taskType;
                data["taskName"]=taskName;
                data["file"]=file;
                data["projectType"]=projectType;
                data["projectModule"]=projectModule;
                data["targetNodes"]=targetNodes;
                data["mainTaskId"]=eventTarget.attr("mainTaskId") //这个是用于update的时候,add时候是没有的
                //console.log(data)
                //console.log(files)
                //return ;
                $.ajax({                                                            //提交主任务
                    type: "post",
                    url: "<%=basepath%>taskServlet?action=addTask",
                    data: data,
                    success: function (response, status, xhr) {
                        console.log("收到回信")
                        //console.log(response)
                        alert(response)
                        if(response=="存入成功") {
                            location.reload()
                        }else {
                        }
                    },
                    timeout: 10000, //如果超时1000毫秒，就结束
                    error: function (xhr, errorText, errorType) { //错误后的行为
                        console.log("回信异常")
                        console.log("errorText:" + errorText); //error
                        console.log("errorType:" + errorType); //not found
                        console.log("xhr.status:" + xhr.status); //404
                        console.log("xhr.statusText:" + xhr.statusText); //not found
                    },
                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                })//ajax  //提交主任务
            }//这是tomcat heartbeat form 的提交事件
        }//这是提交事件的收集器
        if (eventTarget.hasClass("taskStatus")){//这是暂停事件的收集器
            if(eventTarget.hasClass("glyphicon-pause")){
                eventTarget.attr("class","").addClass("btn btn-default glyphicon glyphicon-play taskStatus hand")
                //暂停了
                let pauseTaskData={}
                pauseTaskData["mainTaskId"]=$(".submit").attr("mainTaskId");
                pauseTaskData["taskStatus"]="pause";
                pauseTaskData["mainTaskType"]=$(".taskType").val();

                $.ajax({ //获取targetNodes
                    type: "post",
                    url: "<%=basepath%>taskServlet?action=setMainTaskStatus",
                    data: pauseTaskData,
                    success: function (response, status, xhr) {//渲染 targetNodes
                        console.log("收到回信")
                        //console.log(response)
                    },
                    timeout: 10000, //如果超时1000毫秒，就结束
                    error: function (xhr, errorText, errorType) { //错误后的行为
                        console.log("回信异常")
                        console.log("errorText:" + errorText); //error
                        console.log("errorType:" + errorType); //not found
                        console.log("xhr.status:" + xhr.status); //404
                        console.log("xhr.statusText:" + xhr.statusText); //not found
                    },
                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                })//ajax //修改任务状态为暂停
            }else{
                $(eventTarget).attr("class","").addClass("btn btn-default glyphicon glyphicon-pause taskStatus hand")
                //重新开始了
                let pauseTaskData={}
                pauseTaskData["mainTaskId"]=$(".submit").attr("mainTaskId");
                pauseTaskData["taskStatus"]="make";
                pauseTaskData["mainTaskType"]=$(".taskType").val();

                $.ajax({ //获取targetNodes
                    type: "post",
                    url: "<%=basepath%>taskServlet?action=setMainTaskStatus",
                    data: pauseTaskData,
                    success: function (response, status, xhr) {//渲染 targetNodes
                        //console.log("收到回信")
                        //console.log(response)
                    },
                    timeout: 10000, //如果超时1000毫秒，就结束
                    error: function (xhr, errorText, errorType) { //错误后的行为
                        console.log("回信异常")
                        console.log("errorText:" + errorText); //error
                        console.log("errorType:" + errorType); //not found
                        console.log("xhr.status:" + xhr.status); //404
                        console.log("xhr.statusText:" + xhr.statusText); //not found
                    },
                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                })//ajax //修改任务状态为暂停
            }
        }//这是暂停事件的收集器
        if (eventTarget.hasClass('targetNode')) {//这是点击节点后选中的事件
            if(eventTarget.hasClass("checked")){
                eventTarget.removeClass("checked btn-primary")
            }else{
                eventTarget.addClass("checked btn-primary")
            }
        }//这是点击节点后选中的事件
    })
    $(".resultShowArea").click(function (event) {//利用冒泡
        let eventTarget = $(event.target);
        if (eventTarget.hasClass('targetNode')) {//此时,已经明确了触发事件的元素是"targetNode"元素,下一步获取这个目标的这个任务详情
            $(".resultShowArea").find(".targetNode").removeClass("checked btn-primary")
            eventTarget.addClass("checked btn-primary")
            let data = {}
            data.targetNodeId = eventTarget.attr("targetNodeId")
            data.mainTaskId = eventTarget.attr("mainTaskId")
            $(".showThisTargetNodeThisTaskResult").val("")
            $.ajax({
                type: "post",
                url: "<%=basepath%>taskServlet?action=getSpeciallyAppointedTargetNodeMainTaskResult",
                data: data,
                success: function (response, status, xhr) {
                    console.log("收到回信")
                    //console.log(response)
                    let jsonObj = JSON.parse(response)
                    let showThisTargetNodeThisTaskResult = ""
                    $.each(jsonObj, function (index, item) {
                        //console.log(index)
                        //console.log(item)
                        showThisTargetNodeThisTaskResult = showThisTargetNodeThisTaskResult + "\n" + "id:" + index + "\n" + "command:" + item.command + "\n" + "status:" + item.status + "\n" + "result:" + item.result + "\n"
                    })
                    $(".showThisTargetNodeThisTaskResult").val(showThisTargetNodeThisTaskResult)
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//ajax
        }//此时,已经明确了触发事件的元素是"update"元素,下一步获取整个tr-json对象
    })

    $(".taskType").change(function (event){//任务类型select
        let eventTarget=$(event.target)
        let tbody=$(".tbody")
        let taskType=eventTarget.val()
        //显示 被选中的任务类型 form 区间
        $(".form-horizontal").addClass("hidden")//让全部form都隐藏的语句
        $(".form-horizontal").find(".taskType").find("option").removeAttr("selected")
        console.log(eventTarget.val())
        console.log(eventTarget.val()+"Form")
        $("."+taskType+"Form").removeClass("hidden")
        $("." + taskType + "Form").find(".taskType").find("option").each(function (index,item){
            if($(item).val()==taskType){
                $(item).attr("selected","selected")
            }else{
                $(item).removeAttr("selected")
            }
        })
        //显示 被选中的任务类型 form 区间
        //console.log("主任务id:"+$("." + taskType + "Form").find(".submit:first").attr("mainTaskId"))
        let mainTaskId=$("." + taskType + "Form").find(".submit:first").attr("mainTaskId");
        //获取相应任务类型的任务列表的区间
        $.ajax({                                               //获得任务列表
            type: "post",
            url: "<%=basepath%>taskServlet?action=getTasks",
            data: {"taskType":eventTarget.val()},
            success: function (response, status, xhr) {
                console.log("收到回信")
                //console.log(response)
                let jsonObj=JSON.parse(response);
                //console.log(jsonObj);
                let count=0;
                tbody.html("")
                //渲染列表
                $.each(jsonObj,function (index,item){
                    //console.log(index)
                    //console.log(item)
                    let trObj=$("<tr>")
                    trObj.addClass("tr")
                    let tdObjCount=$("<td>")
                    let inputCheckBoxObj=$("<input>")
                    inputCheckBoxObj.attr("type","checkbox")
                    inputCheckBoxObj.addClass("hidden")
                    tdObjCount.append(inputCheckBoxObj)
                    let spanObj=$("<span/>")
                    spanObj.html(++count+" ")
                    tdObjCount.append(spanObj);
                    let deleteDivNode=$("<div/>")
                    deleteDivNode.addClass("glyphicon glyphicon-remove  taskDelete hand")
                    tdObjCount.append(deleteDivNode)
                    trObj.append(tdObjCount)
                    let tdObjTaskName=$("<td>")
                    tdObjTaskName.addClass("showTask hand")
                    tdObjTaskName.text(item.name);
                    tdObjTaskName.attr("taskId",item.id)
                    tdObjTaskName.attr("taskType",taskType)
                    if(mainTaskId==undefined){

                    }else{
                        if (mainTaskId==item.id){
                            tdObjTaskName.addClass("btn-primary")
                        }else {

                        }
                    }//按照对应类型的form中submit的mainTaskId,给这个td一个选中颜色
                    trObj.append(tdObjTaskName)
                    tbody.append(trObj)
                })
            },
            timeout: 10000, //如果超时1000毫秒，就结束
            error: function (xhr, errorText, errorType) { //错误后的行为
                console.log("回信异常")
                console.log("errorText:" + errorText); //error
                console.log("errorType:" + errorType); //not found
                console.log("xhr.status:" + xhr.status); //404
                console.log("xhr.statusText:" + xhr.statusText); //not found
            },
            dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
        })//获取相应任务类型的任务列表
        //获取相应任务类型的任务列表的区间

        <%--if(response.indexOf("{")>=0){//如果你是json格式的,那么我就分析你;反之,你就报错,那我就报错--%>
        <%--    let submitJsonObj=JSON.parse(response)--%>
        <%--    let submitObj=$(".submit")--%>
        <%--    //console.log("存入成功")--%>
        <%--    alert("存入成功")--%>
        <%--    //console.log($(".submit").attr('mainTaskId'));--%>
        <%--    let tbody=$(".tbody:first")--%>
        <%--    submitObj.attr("submitResult","存入成功")--%>
        <%--    if(submitObj.attr('mainTaskId')){//有值,就是true,就是update--%>
        <%--        console.log("update")--%>
        <%--        $.ajax({                                               //获得任务列表--%>
        <%--            type: "post",--%>
        <%--            url: "<%=basepath%>taskServlet?action=getUpdatePhpCodeTasks",--%>
        <%--            data: data,--%>
        <%--            success: function (response, status, xhr) {--%>
        <%--                console.log("收到回信")--%>
        <%--                //console.log(response)--%>
        <%--                var jsonObj=JSON.parse(response);--%>
        <%--                //console.log(jsonObj);--%>
        <%--                let count=0;--%>
        <%--                tbody.html("")--%>
        <%--                //渲染列表--%>
        <%--                $.each(jsonObj,function (index,item){--%>
        <%--                    //console.log(index)--%>
        <%--                    //console.log(item)--%>
        <%--                    let trObj=$("<tr>")--%>
        <%--                    trObj.addClass("tr")--%>
        <%--                    let tdObjCount=$("<td>")--%>
        <%--                    let inputCheckBoxObj=$("<input>")--%>
        <%--                    inputCheckBoxObj.attr("type","checkbox")--%>
        <%--                    inputCheckBoxObj.addClass("hidden")--%>
        <%--                    tdObjCount.append(inputCheckBoxObj)--%>
        <%--                    let spanObj=$("<span/>")--%>
        <%--                    spanObj.html(++count+" ")--%>
        <%--                    tdObjCount.append(spanObj);--%>
        <%--                    let deleteDivNode=$("<div/>")--%>
        <%--                    deleteDivNode.addClass("glyphicon glyphicon-remove  taskDelete hand")--%>
        <%--                    tdObjCount.append(deleteDivNode)--%>
        <%--                    trObj.append(tdObjCount)--%>
        <%--                    let tdObjTaskName=$("<td>")--%>
        <%--                    tdObjTaskName.addClass("showTask hand")--%>
        <%--                    if(index===$(".submit").attr('mainTaskId')){--%>
        <%--                        tdObjTaskName.addClass("btn-primary")--%>
        <%--                    }--%>
        <%--                    tdObjTaskName.text(item);--%>
        <%--                    tdObjTaskName.attr("taskId",index)--%>
        <%--                    tdObjTaskName.attr("taskType",taskType)--%>
        <%--                    trObj.append(tdObjTaskName)--%>
        <%--                    tbody.append(trObj)--%>
        <%--                })--%>

        <%--                let selectedObj=tbody.find(".btn-primary")--%>
        <%--                let getTaskNodesData={}--%>
        <%--                getTaskNodesData.taskType=selectedObj.attr("taskType");--%>
        <%--                getTaskNodesData.taskId=selectedObj.attr("taskId");--%>
        <%--                //console.log(getTaskNodesData)--%>
        <%--                $.ajax({                                  //获得里列表选中的那一项,去拿它的 targetNodes--%>
        <%--                    type: "post",--%>
        <%--                    url: "<%=basepath%>taskServlet?action=getTaskNodes",--%>
        <%--                    data: getTaskNodesData,--%>
        <%--                    success: function (response, status, xhr) {--%>
        <%--                        console.log("收到回信")--%>
        <%--                        //console.log(response)--%>
        <%--                        let jsonObj=JSON.parse(response)--%>
        <%--                        let mainTaskId=""--%>
        <%--                        let resultButtonArea=$(".resultButtonArea:first").html("")--%>
        <%--                        $.each(jsonObj,function (index,item){--%>
        <%--                            // console.log(index)--%>
        <%--                            // console.log(item)--%>
        <%--                            if(index=="mainTaskId"){--%>
        <%--                                mainTaskId=item;--%>
        <%--                            }else {--%>
        <%--                                let divObj=$("<div/>")--%>
        <%--                                divObj.addClass("btn btn-default targetNode")--%>
        <%--                                divObj.attr("targetNodeId",index)--%>
        <%--                                divObj.attr("mainTaskId",mainTaskId)--%>
        <%--                                divObj.text(item)--%>
        <%--                                resultButtonArea.append(divObj)--%>
        <%--                                resultButtonArea.append(" ")--%>
        <%--                            }--%>
        <%--                        })--%>
        <%--                    },--%>
        <%--                    timeout: 10000, //如果超时1000毫秒，就结束--%>
        <%--                    error: function (xhr, errorText, errorType) { //错误后的行为--%>
        <%--                        console.log("回信异常")--%>
        <%--                        console.log("errorText:" + errorText); //error--%>
        <%--                        console.log("errorType:" + errorType); //not found--%>
        <%--                        console.log("xhr.status:" + xhr.status); //404--%>
        <%--                        console.log("xhr.statusText:" + xhr.statusText); //not found--%>
        <%--                    },--%>
        <%--                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
        <%--                })//ajax                                 //获得里列表选中的那项,去拿它的 targetNodes--%>
        <%--            },--%>
        <%--            timeout: 10000, //如果超时1000毫秒，就结束--%>
        <%--            error: function (xhr, errorText, errorType) { //错误后的行为--%>
        <%--                console.log("回信异常")--%>
        <%--                console.log("errorText:" + errorText); //error--%>
        <%--                console.log("errorType:" + errorType); //not found--%>
        <%--                console.log("xhr.status:" + xhr.status); //404--%>
        <%--                console.log("xhr.statusText:" + xhr.statusText); //not found--%>
        <%--            },--%>
        <%--            dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
        <%--        })//ajax  //update后,获得任务列表--%>
        <%--    }else {//undefined 为false,就是add--%>
        <%--        console.log("add")--%>
        <%--        submitObj.attr('mainTaskId',submitJsonObj.mainTaskId) //这个是补充于add时候,update的时候不更新--%>
        <%--        $.ajax({                                               //获得任务列表--%>
        <%--            type: "post",--%>
        <%--            url: "<%=basepath%>taskServlet?action=getUpdatePhpCodeTasks",--%>
        <%--            data: data,--%>
        <%--            success: function (response, status, xhr) {--%>
        <%--                console.log("收到回信")--%>
        <%--                //console.log(response)--%>
        <%--                var jsonObj=JSON.parse(response);--%>
        <%--                //console.log(jsonObj);--%>
        <%--                let count=0;--%>
        <%--                tbody.html("")--%>
        <%--                // rendDataToTaskList(jsonObj,tbody,data["taskType"],count)  //渲染列表--%>
        <%--                let rendDataToTaskListCount=1;--%>
        <%--                $.each(jsonObj,function (index,item){--%>
        <%--                    //console.log(index)--%>
        <%--                    //console.log(item)--%>
        <%--                    let trObj=$("<tr>")--%>
        <%--                    trObj.addClass("tr")--%>
        <%--                    let tdObjCount=$("<td>")--%>
        <%--                    let inputCheckBoxObj=$("<input>")--%>
        <%--                    inputCheckBoxObj.attr("type","checkbox")--%>
        <%--                    inputCheckBoxObj.addClass("hidden")--%>
        <%--                    tdObjCount.append(inputCheckBoxObj)--%>
        <%--                    let spanObj=$("<span/>")--%>
        <%--                    spanObj.html(++count+" ")--%>
        <%--                    tdObjCount.append(spanObj);--%>
        <%--                    let deleteDivNode=$("<div/>")--%>
        <%--                    deleteDivNode.addClass("glyphicon glyphicon-remove  taskDelete hand")--%>
        <%--                    tdObjCount.append(deleteDivNode)--%>
        <%--                    trObj.append(tdObjCount)--%>
        <%--                    let tdObjTaskName=$("<td>")--%>
        <%--                    tdObjTaskName.addClass("showTask hand")--%>
        <%--                    if(rendDataToTaskListCount++ == Object.keys(jsonObj).length){--%>
        <%--                        tdObjTaskName.addClass("btn-primary")--%>
        <%--                    }--%>
        <%--                    tdObjTaskName.text(item);--%>
        <%--                    tdObjTaskName.attr("taskId",index)--%>
        <%--                    tdObjTaskName.attr("taskType",taskType)--%>
        <%--                    trObj.append(tdObjTaskName)--%>
        <%--                    tbody.append(trObj)--%>
        <%--                })--%>

        <%--                let selectedObj=tbody.find(".btn-primary")--%>
        <%--                let getTaskNodesData={}--%>
        <%--                getTaskNodesData.taskType=selectedObj.attr("taskType");--%>
        <%--                getTaskNodesData.taskId=selectedObj.attr("taskId");--%>
        <%--                //console.log("这是add行为后的渲染列表后的获取targetNodes的data")--%>
        <%--                //console.log(getTaskNodesData)--%>
        <%--                $.ajax({                                  //获得里列表里被选中的那一项,去拿它的 targetNodes--%>
        <%--                    type: "post",--%>
        <%--                    url: "<%=basepath%>taskServlet?action=getTaskNodes",--%>
        <%--                    data: getTaskNodesData,--%>
        <%--                    success: function (response, status, xhr) {--%>
        <%--                        console.log("收到回信")--%>
        <%--                        //console.log(response)--%>
        <%--                        //return--%>
        <%--                        let jsonObj=JSON.parse(response)--%>
        <%--                        let mainTaskId=""--%>
        <%--                        let resultButtonArea=$(".resultButtonArea:first").html("")--%>
        <%--                        $.each(jsonObj,function (index,item){--%>
        <%--                            // console.log(index)--%>
        <%--                            // console.log(item)--%>
        <%--                            if(index=="mainTaskId"){--%>
        <%--                                mainTaskId=item;--%>
        <%--                            }else {--%>
        <%--                                let divObj=$("<div/>")--%>
        <%--                                divObj.addClass("btn btn-default targetNode")--%>
        <%--                                divObj.attr("targetNodeId",index)--%>
        <%--                                divObj.attr("mainTaskId",mainTaskId)--%>
        <%--                                divObj.text(item)--%>
        <%--                                resultButtonArea.append(divObj)--%>
        <%--                                resultButtonArea.append(" ")--%>
        <%--                            }--%>
        <%--                        })--%>
        <%--                    },--%>
        <%--                    timeout: 10000, //如果超时1000毫秒，就结束--%>
        <%--                    error: function (xhr, errorText, errorType) { //错误后的行为--%>
        <%--                        console.log("回信异常")--%>
        <%--                        console.log("errorText:" + errorText); //error--%>
        <%--                        console.log("errorType:" + errorType); //not found--%>
        <%--                        console.log("xhr.status:" + xhr.status); //404--%>
        <%--                        console.log("xhr.statusText:" + xhr.statusText); //not found--%>
        <%--                    },--%>
        <%--                    dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
        <%--                })//ajax                                 //获得里列表选中的那项,去拿它的 targetNodes--%>
        <%--            },--%>
        <%--            timeout: 10000, //如果超时1000毫秒，就结束--%>
        <%--            error: function (xhr, errorText, errorType) { //错误后的行为--%>
        <%--                console.log("回信异常")--%>
        <%--                console.log("errorText:" + errorText); //error--%>
        <%--                console.log("errorType:" + errorType); //not found--%>
        <%--                console.log("xhr.status:" + xhr.status); //404--%>
        <%--                console.log("xhr.statusText:" + xhr.statusText); //not found--%>
        <%--            },--%>
        <%--            dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text--%>
        <%--        })//ajax  //add后,获得任务列表--%>
        <%--    } //判断是新增还是update,他俩的列表选中规则不同--%>
        <%--}else {--%>
        <%--    submitObj.attr("submitResult","存入失败")--%>
        <%--    alert("存入失败,请看consoleLog");--%>
        <%--}--%>
    })//任务类型select
    $(".projectType").change(function (event){
        let data={};
        data.projectId=$(this).val();
        if($(this).closest("form").attr("class").indexOf("updatePhpCodeTaskForm")>=0){
            $.ajax({//获取模块s
                type: "post",
                url: "<%=basepath%>projectServlet?action=getProjectModules&projectModuleTypeName=php",
                data: data,
                success: function (response, status, xhr) {
                    //console.log("收到回信")
                    //console.log(response)
                    //console.log(JSON.parse(response));
                    let projectModuleObj=$(".updatePhpCodeTaskForm").find(".projectModule").html("")
                    $.each(JSON.parse(response),function (index,element){
                       //console.log(index)
                       //console.log(element.id)
                       let optionObj=$("<option/>")
                       optionObj.val(element.id)
                       optionObj.text(element.name)
                        projectModuleObj.append(optionObj)
                    })
                    let data={"projectModuleId":projectModuleObj.val()}
                    $.ajax({//根据模块的第一个,获取target节点
                        type: "post",
                        url: "<%=basepath%>serviceServlet?action=getTargetNodesByProjectModuleId",
                        data: data,
                        success: function (response, status, xhr) {
                            //console.log("收到回信")
                            //console.log(response)
                            //console.log(JSON.parse(response));
                            let targetNodeAreaObj=$(".updatePhpCodeTaskForm").find(".targetNodeArea").html("")
                            if(response == "[]"){
                                $(".updatePhpCodeTaskForm").find(".targetNodeArea").html("无")
                            }else{
                                $.each(JSON.parse(response),function (index,item){
                                    //console.log(index)
                                    //console.log(element.id)
                                    let pObj=$("<p/>")
                                    pObj.addClass("targetNode btn btn-default ")
                                    //console.log(item)
                                    pObj.attr("targetNodeId",item.id)
                                    pObj.text(item.use)
                                    targetNodeAreaObj.append(pObj)
                                    targetNodeAreaObj.append(" ")
                                })
                            }
                        },
                        timeout: 10000, //如果超时1000毫秒，就结束
                        error: function (xhr, errorText, errorType) { //错误后的行为
                            console.log("回信异常")
                            console.log("errorText:" + errorText); //error
                            console.log("errorType:" + errorType); //not found
                            console.log("xhr.status:" + xhr.status); //404
                            console.log("xhr.statusText:" + xhr.statusText); //not found
                        },
                        dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                    })//根据模块的第一个,获取target节点的ajax
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//获取模块s 的ajax
        } //ajax for php
        if($(this).closest("form").attr("class").indexOf("updateTomcatCodeTaskForm")>=0){
            $.ajax({//获取模块s
                type: "post",
                url: "<%=basepath%>projectServlet?action=getProjectModules&projectModuleTypeName=tomcat",
                data: data,
                success: function (response, status, xhr) {
                    //console.log("收到回信")
                    //console.log(response)
                    //console.log(JSON.parse(response));
                    let projectModuleObj=$(".updateTomcatCodeTaskForm").find(".projectModule").html("")
                    $.each(JSON.parse(response),function (index,element){
                        //console.log(index)
                        //console.log(element.id)
                        let optionObj=$("<option/>")
                        optionObj.val(element.id)
                        optionObj.text(element.name)
                        projectModuleObj.append(optionObj)
                    })
                    let data={"projectModuleId":projectModuleObj.val()}
                    $.ajax({//根据模块的第一个,获取target节点
                        type: "post",
                        url: "<%=basepath%>serviceServlet?action=getTargetNodesByProjectModuleId",
                        data: data,
                        success: function (response, status, xhr) {
                            //console.log("收到回信")
                            //console.log(response)
                            //console.log(JSON.parse(response));
                            let targetNodeAreaObj=$(".updateTomcatCodeTaskForm").find(".targetNodeArea").html("")
                            if(response == "[]"){
                                $(".updateTomcatCodeTaskForm").find(".targetNodeArea").html("无")
                            }else{
                                $.each(JSON.parse(response),function (index,item){
                                    //console.log(index)
                                    //console.log(element.id)
                                    let pObj=$("<p/>")
                                    pObj.addClass("targetNode btn btn-default ")
                                    pObj.attr("targetNodeId",item.id)
                                    pObj.text(item.use)
                                    targetNodeAreaObj.append(pObj)
                                    targetNodeAreaObj.append(" ")
                                })
                            }
                        },
                        timeout: 10000, //如果超时1000毫秒，就结束
                        error: function (xhr, errorText, errorType) { //错误后的行为
                            console.log("回信异常")
                            console.log("errorText:" + errorText); //error
                            console.log("errorType:" + errorType); //not found
                            console.log("xhr.status:" + xhr.status); //404
                            console.log("xhr.statusText:" + xhr.statusText); //not found
                        },
                        dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                    })//根据模块的第一个,获取target节点的ajax
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//获取模块s 的ajax
        } //ajax for tomcat
        if($(this).closest("form").attr("class").indexOf("updateTomcatCodeAndHeartbeatTaskForm")>=0){//tomcatAndHeartbeat
            //console.log("去获取updateTomcatCodeAndHeartbeatTaskForm的modules")
            $.ajax({//获取模块s
                type: "post",
                url: "<%=basepath%>projectServlet?action=getProjectModules&projectModuleTypeName=tomcatAndHeartbeat",
                data: data,
                success: function (response, status, xhr) {
                    //console.log("收到回信")
                    //console.log(response)
                    //console.log(JSON.parse(response));
                    let projectModuleObj=$(".updateTomcatCodeAndHeartbeatTaskForm").find(".projectModule").html("")
                    $.each(JSON.parse(response),function (index,element){
                        //console.log(index)
                        //console.log(element.id)
                        let optionObj=$("<option/>")
                        optionObj.val(element.id)
                        optionObj.text(element.name)
                        projectModuleObj.append(optionObj)
                    })
                    let data={"projectModuleId":projectModuleObj.val()}
                    $.ajax({//根据模块的第一个,获取target节点
                        type: "post",
                        url: "<%=basepath%>serviceServlet?action=getTargetNodesByProjectModuleId",
                        data: data,
                        success: function (response, status, xhr) {
                            //console.log("收到回信")
                            //console.log(response)
                            //console.log(JSON.parse(response));
                            let targetNodeAreaObj=$(".updateTomcatCodeAndHeartbeatTaskForm").find(".targetNodeArea").html("")
                            if(response == "[]"){
                                $(".updateTomcatCodeAndHeartbeatTaskForm").find(".targetNodeArea").html("无")
                            }else{
                                $.each(JSON.parse(response),function (index,item){
                                    //console.log(index)
                                    //console.log(element.id)
                                    let pObj=$("<p/>")
                                    pObj.addClass("targetNode btn btn-default ")
                                    pObj.attr("targetNodeId",item.id)
                                    pObj.text(item.use)
                                    targetNodeAreaObj.append(pObj)
                                    targetNodeAreaObj.append(" ")
                                })
                            }
                        },
                        timeout: 10000, //如果超时1000毫秒，就结束
                        error: function (xhr, errorText, errorType) { //错误后的行为
                            console.log("回信异常")
                            console.log("errorText:" + errorText); //error
                            console.log("errorType:" + errorType); //not found
                            console.log("xhr.status:" + xhr.status); //404
                            console.log("xhr.statusText:" + xhr.statusText); //not found
                        },
                        dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
                    })//根据模块的第一个,获取target节点的ajax
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//获取模块s 的ajax
        } //ajax for tomcatAndHeartbeat
    })//项目类型select
    $(".projectModule").change(function (event){
        let eventTarget=$(event.target)
        let projectModuleId=eventTarget.val()
        //console.log(projectModuleId)
        let data={"projectModuleId":projectModuleId}
        if (eventTarget.closest("form").attr("class").indexOf("updatePhpCodeTaskForm")>=0){
            $.ajax({//根据模块的第一个,获取target节点
                type: "post",
                url: "<%=basepath%>serviceServlet?action=getTargetNodesByProjectModuleId",
                data: data,
                success: function (response, status, xhr) {
                    //console.log("收到回信")
                    //console.log(response)
                    //console.log(JSON.parse(response));
                    let targetNodeAreaObj=$(".updatePhpCodeTaskForm").find(".targetNodeArea").html("")
                    if(response == "[]"){
                        $(".updatePhpCodeTaskForm").find(".targetNodeArea").html("无")
                    }else{
                        $.each(JSON.parse(response),function (index,item){
                            //console.log(index)
                            //console.log(element.id)
                            let pObj=$("<p/>")
                            pObj.addClass("targetNode btn btn-default ")
                            pObj.attr("targetNodeId",item.id)
                            pObj.text(item.use)
                            targetNodeAreaObj.append(pObj)
                            targetNodeAreaObj.append(" ")
                        })
                    }
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//根据模块的id,获取target节点的ajax
        }//根据模块的id,获取target节点的ajax
        if (eventTarget.closest("form").attr("class").indexOf("updateTomcatCodeTaskForm")>=0){
            $.ajax({//根据模块的第一个,获取target节点
                type: "post",
                url: "<%=basepath%>serviceServlet?action=getTargetNodesByProjectModuleId",
                data: data,
                success: function (response, status, xhr) {
                    //console.log("收到回信")
                    //console.log(response)
                    //console.log(JSON.parse(response));
                    let targetNodeAreaObj=$(".targetNodeArea").html("")
                    if(response == "[]"){
                        $(".updateTomcatCodeTaskForm").find(".targetNodeArea").html("无")
                    }else{
                        $.each(JSON.parse(response),function (index,item){
                            //console.log(index)
                            //console.log(element.id)
                            let pObj=$("<p/>")
                            pObj.addClass("targetNode btn btn-default ")
                            pObj.attr("targetNodeId",item.id)
                            pObj.text(item.use)
                            targetNodeAreaObj.append(pObj)
                            targetNodeAreaObj.append(" ")
                        })
                    }
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//根据模块的id,获取target节点的ajax
        }//根据模块的id,获取target节点的ajax

    })//模块改变后,改变targetNode
    $(".targetNodeFilter").keyup(function (event){
        let keyWord=$(event.target).val().trim()
        //$(".targetNodeArea").find(".targetNode").removeClass("checked btn-primary").removeClass(" btn-primary").removeClass("hidden")
        $(".targetNodeArea").find(".targetNode").attr("class","targetNode btn btn-default")
        $(".targetNodeArea").find(".targetNode:not(:contains('"+keyWord+"'))").addClass("hidden")
    })//节点过滤器input

    $("#submitUpdate").click(function () {//这是更新的模态框点击了确定键后搜索数据并提交的过程
        console.log(1)
        let eventTarget = $('.yaotijiaodedian')
        let trObjData = {};
        let table=eventTarget.closest("table");
        let trObj=eventTarget.closest(".tr");
        if(table.hasClass("docker")){
            <c:if test="${empty server}">
                trObjData["serverId"]=trObj.find(".serverEdit:first").val();
            </c:if>
            <c:if test="${!empty server}">
                trObjData["serverId"]="${server.id}";
            </c:if>
            //获取serverId
            let idObj=trObj.find(".id");
            if(idObj.hasClass("createSign")){//有新增标志
                trObjData["id"]=null;
            }else{//没有新增标识,表示update,需要从单元格中获取container Id
                trObjData["id"]=idObj.text();
            }//获取containerId
            let arr = ["name","imageVersion", "cpuMemory", "volume","ip","portMap","use","endTime"];
            trObj.find(".form-control").each(function (index,element){
                for (let i in arr) { //不写这个就要把上面的这个if写5次
                    if ($(element).hasClass(arr[i] + "Edit")) {
                        trObjData[arr[i]] = $(element).val()
                    }
                }//不写这个就要把上面的这个if写8次
            })//收集参数
            // console.log(trObj)
            // return
            console.log(trObjData)
            //return
            $.ajax({
                type: "post",
                url: "<%=basepath%>containerServlet?action=ajaxConfigContainer&configType=docker",
                data: trObjData,
                success: function (response, status, xhr) {
                    console.log("收到回信")
                    console.log(response)
                    if (response == "存入成功") {
                        //console.log("存入成功")
                        alert("存入成功")
                        <c:if test="${empty server}">
                            location.href = "<%=basepath%>containerServlet?action=list";
                        </c:if>
                        <c:if test="${!empty server}">
                            location.href = "<%=basepath%>containerServlet?action=list&serviceId=${service.id}";
                        </c:if>
                    } else {
                        alert("存入失败,请看consoleLog");
                    }
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//ajax
        }
    })//这是更新的模态框点击了确定键后搜索数据并提交的过程
    $("#submitDelete").click(function () {//这是更新的模态框点击了确定键后搜索数据并提交的过程
        let eventTarget = $('.yaotijiaodedian')
        let table=eventTarget.closest("table");
        let trObj=eventTarget.closest(".tr");
        //console.log(trObj.find(".id:first").text())
        if(table.hasClass("docker")){
            $.ajax({
                type: "post",
                url: "<%=basepath%>containerServlet?action=ajaxConfigContainer&serviceId=${service.id}&delete=true&configType=docker",
                data: {"id": trObj.find(".id:first").text()},
                success: function (response, status, xhr) {
                    console.log("收到回信")
                    console.log(response)
                    if (response == "删除成功") {
                        alert("删除成功")
                        <c:if test="${empty server}">
                        location.href = "<%=basepath%>containerServlet?action=list";
                        </c:if>
                        <c:if test="${!empty server}">
                        location.href = "<%=basepath%>containerServlet?action=list&serviceId=${service.id}";
                        </c:if>
                    } else {
                        alert("删除失败");
                    }
                },
                timeout: 10000, //如果超时1000毫秒，就结束
                error: function (xhr, errorText, errorType) { //错误后的行为
                    console.log("回信异常")
                    console.log("errorText:" + errorText); //error
                    console.log("errorType:" + errorType); //not found
                    console.log("xhr.status:" + xhr.status); //404
                    console.log("xhr.statusText:" + xhr.statusText); //not found
                },
                dataType: "text" //类型还有json,能免去接受到回复后,处理json文本后的过程 还有xml类型,一般不用 最好一直用text
            })//ajax
        }

    })//这是删除的模态框点击了确定键后搜索数据并提交的过程
</script>
<!--表格点击事件-->
</html>